iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

前情提要

  1. adhoc 寫一個 Python FastAPI 範例 + Dockerfile
  2. 用 Ansible 遠端部署 <- 現在在這裡
  3. 用 Ansible AWX 自動部署

我們從昨天的 layout 開始,

├── ansible.cfg
├── inventory
├── main.yml
└── roles
    └── hello_world
        ├── tasks
        │   └── main.yml
        └── vars
            └── main.yml

昨天講過了最基礎的 ansible.cfginventory 的內容
並且從 ansible -m ping all 知道所有 remote host 都能 ssh 連上,
(雖然現在只有一個 remote host)
至少驗證了 ansible.cfginventory 是可用的

今天的目的就是再把 hello_world 這支 playbook 打通,
不囉嗦直接上內容

先看 main.yml

---
- name: main task
  hosts: staging
  roles:
    - role: hello_world

它要做的事很簡單,
就是去執行 hello_world 這支 role,
以後我們有新的 role 時,
直接往下面一行加就好

再看 roles/hello_world/tasks/main.yml 長這樣

---
- name: show remote host
  debug:
    msg: "the remote server is {{ ansible_host }}"
- name: show vars of this playbook
  debug:
    msg: "{{ greeting }}"

它做兩件事,第一件事是打印出 remote server name,
驗證我們真的 ssh 到遠端 server 做事;
第二件事是打印出 greeting 這個參數,
這個參數我們還沒定義,
馬上就來做

最後看 roles/hello_world/vars/main.yml

greeting: "hello ansible-playbook"

甚至簡單到只有一行,
內容非常直觀,
我們簡單地匹配了 tasks 要作的事,
及其會用到的 vars 相關參數,

至此,
我們預期運作最外面的 main.yml 之後發生兩件事,

  1. ssh access remote server 並打印 hostname
  2. 打印出 hello ansible-playbook

壓下ansible-playbook main.yml
且看結果
img

今天就先醬,
好期待中秋連假~
在想為複雜一點的 ansible playbook + awx 要寫什麼 demo 呢?


上一篇
Ansible playbook layout
下一篇
Ansible 部署後端 API 的 docker container
系列文
我只是想自動執行 Ansible ,一定要用 Jenkins 嗎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言